package com.哈希表;

import java.util.*;

/**
 * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
 */
public class 字符串中的第一个唯一字符 {
    static class Solution {
        public int firstUniqChar(String s) {
        Map<Character,Integer> map = new LinkedHashMap<>();
        for(int i  = 0 ;i<s.length();i++){
            if(map.containsKey(s.charAt(i))){
                int sum = map.get(s.charAt(i));
                map.put(s.charAt(i),++sum);
            }
            else{
                map.put(s.charAt(i),1);
            }

        }
        Set<Integer> set = new TreeSet<>();
        for(Map.Entry<Character,Integer> entry:map.entrySet()){
            if(entry.getValue() == 1){
                set.add(s.indexOf(entry.getKey()+""));
            }
        }

        Iterator<Integer> iterator = set.iterator();
        if (iterator.hasNext()){
            return iterator.next();
        }
        return -1;


    }

        public int firstUniqChar2(String s) {
            Map<Character,Integer> map = new LinkedHashMap<>();
            for(int i  = 0 ;i<s.length();i++){
                if(map.containsKey(s.charAt(i))){
                    int sum = map.get(s.charAt(i));
                    map.put(s.charAt(i),++sum);
                }
                else{
                    map.put(s.charAt(i),1);
                }

            }

            for(Map.Entry<Character,Integer> entry:map.entrySet()){
                if(entry.getValue() == 1){
                   return s.indexOf(entry.getKey()+"");
                }
            }


            return -1;


        }
    }


    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println( solution.firstUniqChar2("aadadaad"));

    }
}
